package fr.generali.accueilclient.gwt.showcase.client.form;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiFactory;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;

import fr.generali.accueilclient.gwt.client.ui.components.table.ColumnDescription;
import fr.generali.accueilclient.gwt.client.ui.components.table.TableWidget;
import fr.generali.accueilclient.gwt.showcase.client.Personne;

public class TableExemple extends Composite {

    private static TableExempleUiBinder uiBinder = GWT.create(TableExempleUiBinder.class);

    interface TableExempleUiBinder extends UiBinder<Widget, TableExemple> {
    }

    @UiField
    TableWidget<Personne> tablePersonne;

    public TableExemple() {
        initWidget(uiBinder.createAndBindUi(this));
        tablePersonne.setData(generateData());
    }

    private List<Personne> generateData() {
        List<Personne> list = new ArrayList<Personne>();
        list.add(new Personne("titi", "toto"));
        list.add(new Personne("titi", "toto"));
        list.add(new Personne("titi", "toto"));
        return list;
    }

    @UiFactory
    protected TableWidget<Personne> createTable() {
        List<ColumnDescription> descriptions = new ArrayList<ColumnDescription>();

        Column<Personne, String> nom = new TextColumn<Personne>() {
            @Override
            public String getValue(Personne personne) {
                return personne.getPrenom();
            }
        };

        Column<Personne, String> prenom = new TextColumn<Personne>() {
            @Override
            public String getValue(Personne personne) {
                return personne.getPrenom();
            }
        };
        descriptions.add(new ColumnDescription("Nom", "40px", nom));
        descriptions.add(new ColumnDescription("Prenom", "80px", prenom));
        TableWidget<Personne> table = new TableWidget<Personne>(descriptions);
        table.getCellTable().setWidth("40%", true);
        return table;
    }

}
